#ifndef GROUPCHAT_H
#define GROUPCHAT_H

#include "chat.h"

// 管理员的数量
const int NUM_ADMIN = 3;

// 群聊需要处理多个成员，对成员封装

struct Member{
    QString id;
    // 成员自定义自身昵称以及本群昵称
    QString memberName;
    QString groupName;
    // 用id判断相等
    bool operator==(const Member& mb){return this->id == mb.id;}
};

class GroupChat:public Chat
{
    // 群名
    QString name;
    // 群成员
    QVector<Member> members;
    // 群主
    QString leader;
    // 管理员
    QVector<QString> administrators;
public:
    GroupChat();
    GroupChat(QString name, QString leader, QVector<Member> members);
    // 处理群成员
    void AddMember(Member mb);
    void DelMember(Member mb);
    void UpdMember(Member mb);
    QVector<Member> GetMembers();
    // 群管理
    void AddAdmin(QString adm);
    void DelAdmin(QString adm);
    QVector<QString> GetAdmins();
    QVector<QString> GetAllAdmins();// 管理员和群主
    QString GetLeader();

};

#endif // GROUPCHAT_H
